package com.gxuwz.eschool.config;

import android.content.Context;
import android.content.SharedPreferences;

import androidx.annotation.NonNull;

public final class SpUtil {
    private static final String PREF_NAME = "message_records"; // 偏好设置名称
    public SharedPreferences mSharedPreferences;

    private SpUtil() {
        mSharedPreferences = ESchoolApplication.getInstance().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE);
    }

    public static SpUtil getInstance() {
        // 这里不需要缓存实例，因为SharedPreferences本身就是线程安全的
        return new SpUtil();
    }

    public void putMessage(@NonNull String key, @NonNull String value) {
        mSharedPreferences.edit().putString(key, value).apply();
    }

    public String getMessage(@NonNull String key) {
        return mSharedPreferences.getString(key, "");
    }

    public void removeMessage(@NonNull String key) {
        mSharedPreferences.edit().remove(key).apply();
    }

    // 假设您使用时间戳或唯一ID作为key来存储消息
    public void addMessageRecord(String message) {
        // 您可以使用时间戳或UUID作为key
        long timestamp = System.currentTimeMillis();
        putMessage(String.valueOf(timestamp), message);
    }

    // 获取所有消息记录（注意：这可能需要一些额外的逻辑来处理大量数据）
    public void getAllMessageRecords(SharedPreferences.OnSharedPreferenceChangeListener listener) {
        // 由于SharedPreferences不直接支持获取所有key-value对，您需要遍历它们
        // 但由于这可能需要一些时间，并且可能会阻塞UI线程，通常建议通过监听器来处理
        mSharedPreferences.registerOnSharedPreferenceChangeListener(listener);
        // 注意：这里只是注册监听器，实际的读取逻辑应该在监听器的onSharedPreferenceChanged方法中实现
    }

    // 不要忘记在不再需要监听时注销监听器
    public void unregisterListener(SharedPreferences.OnSharedPreferenceChangeListener listener) {
        mSharedPreferences.unregisterOnSharedPreferenceChangeListener(listener);
    }
}
